package com.itany.corejava.code06_面向对象.接口;

/**
 * @author 石小俊
 * @date 2024年01月17日 15:01
 */
public class Test02_接口特性 {
}

interface A {
    void doSome();

    void doOther();

    // default关键字是JDK8引入的新的特性
    // 可以在接口中对方法做默认实现
    // 当类实现接口的时候可以选择不重写该方法
    // 也可以选择重写该方法
    default int sum(int i, int j) {
        return i + j;
    }
}

interface B {
    void login();

    void register();
}

// 一个类可以实现多个接口,多个接口之间以逗号分隔
// 实现了多个接口之后,需要重写所有接口中的所有抽象方法
class C implements A, B {

    @Override
    public void doSome() {

    }

    @Override
    public void doOther() {

    }

    @Override
    public void login() {

    }

    @Override
    public void register() {

    }

    @Override
    public int sum(int i, int j) {
        return i * j;
    }
}

// 接口可以继承接口,但是不能继承类
// 接口支持多继承,类只支持单继承
interface D extends A,B{
    void show();
}
class E implements D{

    @Override
    public void doSome() {

    }

    @Override
    public void doOther() {

    }

    @Override
    public void show() {

    }

    @Override
    public void login() {

    }

    @Override
    public void register() {

    }
}